
// Reflect 和Math 类似，是静态类，内部封装了一系列对对象的底层操作。
// 统一的对象操作API

// Reflect成员方法就是Proxy处理对象的默认实现
// 比如  getter
const obj = {
    name: 'sanfeng_hu',
    age: '18'
}

const objProxy = new Proxy(obj,{
    get(target, property) {
        console.log("getter 被调用！")
        return Reflect.get(target, property)
    }
})
console.log(objProxy.age);

// 对于对象的操作我们已经有各种方法去实现，为啥还要有  Reflect?
// 个人认为是因为 统一提供一套用于操作对象的API

// 几个例子
const obj1 = {
    name:"sanfeng_hu",
    age:18
}

console.log("name" in obj1)
console.log(Reflect.has(obj1, "name"))

console.log(delete obj1["age"])
console.log(Reflect.deleteProperty(obj1, "age"))

console.log(Object.keys(obj1))
console.log(Reflect.ownKeys(obj1))

